CREATE VIEW [dbo].[W_LOJA_PRODUTOS_VENDEDORES]
AS
-- 13/01/2010 - Bruno - Alterada view para buscar as vendas da tabela Loja_Venda_Vendedores.
SELECT 
	A.CODIGO_FILIAL, A.TICKET, A.DATA_VENDA, G.ITEM, A.TERMINAL, B.LANCAMENTO_CAIXA, B.NUMERO_CUPOM_FISCAL, A.PERIODO_FECHAMENTO,
	D.VENDEDOR, E.VENDEDOR_APELIDO, G.PRODUTO, G.COR_PRODUTO, G.TAMANHO,
	CONVERT(NUMERIC(14,2), G.QTDE_VENDA - G.QTDE_TROCA) AS QTDE,
	CONVERT(NUMERIC(14, 2), G.QTDE_VENDA) AS QTDE_VENDA, 
	CONVERT(NUMERIC(14, 2), G.QTDE_TROCA) AS QTDE_TROCA, 
	CASE WHEN G.VALOR_VENDA_LIQ < 0 THEN 0 ELSE ISNULL(G.VALOR_VENDA_LIQ, 0) END AS VALOR_LIQUIDO_VENDA,
	CONVERT(NUMERIC(14, 2), G.VALOR_VENDA) AS VALOR_VENDA,
	CONVERT(NUMERIC(14, 2), G.VALOR_TROCA) AS VALOR_TROCA
FROM
	LOJA_VENDA A
	INNER JOIN LOJA_VENDA_PGTO B ON A.CODIGO_FILIAL_PGTO = B.CODIGO_FILIAL AND A.TERMINAL_PGTO = B.TERMINAL AND A.LANCAMENTO_CAIXA = B.LANCAMENTO_CAIXA
	INNER JOIN LOJA_VENDA_VENDEDORES D ON A.CODIGO_FILIAL = D.CODIGO_FILIAL AND A.TICKET = D.TICKET AND A.DATA_VENDA = D.DATA_VENDA
	INNER JOIN LOJA_VENDEDORES E ON D.VENDEDOR = E.VENDEDOR
	INNER JOIN LOJAS_VAREJO F ON A.CODIGO_FILIAL = F.CODIGO_FILIAL
	LEFT JOIN 
		(
			SELECT
				  A.CODIGO_FILIAL, A.TICKET, A.DATA_VENDA, A.ITEM, A.ID_VENDEDOR, A.PRODUTO, A.COR_PRODUTO, A.TAMANHO,
				  CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE CONVERT(NUMERIC(14, 2), A.QTDE / CONVERT(NUMERIC(14, 2), COUNT(B.VENDEDOR))) END AS QTDE_PECAS, 
				  CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE A.QTDE * A.PRECO_LIQUIDO * A.FATOR_VENDA_LIQ / COUNT(B.VENDEDOR) END AS VALOR_VENDA_LIQ, 
				  CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE A.QTDE * A.PRECO_LIQUIDO * ISNULL(1 - A.FATOR_DESCONTO_VENDA, 1) / COUNT(B.VENDEDOR) END AS VALOR_VENDA, 
				  0 AS VALOR_TROCA,
				  CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE CONVERT(NUMERIC(14, 2), A.QTDE / CONVERT(NUMERIC(14, 2), COUNT(B.VENDEDOR))) END AS QTDE_VENDA, 
				  CASE COUNT(B.VENDEDOR) WHEN 0 THEN 1 ELSE CONVERT(NUMERIC(14, 2), 1 / CONVERT(NUMERIC(14, 2), COUNT(B.VENDEDOR))) END AS QTDE_ITENS, 
				  CONVERT(NUMERIC(14, 2), 0) AS QTDE_TROCA 
			FROM
				  LOJA_VENDA_PRODUTO A 
				  LEFT JOIN LOJA_VENDA_VENDEDORES B ON A.CODIGO_FILIAL = B.CODIGO_FILIAL AND A.TICKET = B.TICKET AND A.DATA_VENDA = B.DATA_VENDA AND A.ID_VENDEDOR = B.ID_VENDEDOR 
			WHERE
				  (A.ITEM_EXCLUIDO = 0 OR A.ITEM_EXCLUIDO IS NULL) AND A.QTDE_CANCELADA = 0
			GROUP BY
				  A.CODIGO_FILIAL, A.TICKET, A.DATA_VENDA, A.ITEM, A.ID_VENDEDOR, A.QTDE, A.PRECO_LIQUIDO, A.FATOR_VENDA_LIQ, A.FATOR_DESCONTO_VENDA, A.PRODUTO, A.COR_PRODUTO, A.TAMANHO
			UNION
			SELECT
				  A.CODIGO_FILIAL, A.TICKET, A.DATA_VENDA, A.ITEM, A.ID_VENDEDOR, A.PRODUTO, A.COR_PRODUTO, A.TAMANHO,
				  CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE CONVERT(NUMERIC(14, 2), A.QTDE / CONVERT(NUMERIC(14, 2), COUNT(B.VENDEDOR))) * -1 END AS QTDE_PECAS, 
				  CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE A.QTDE * A.PRECO_LIQUIDO * ISNULL(1 - A.FATOR_DESCONTO_VENDA, 1) / COUNT(B.VENDEDOR) * -1 END AS VALOR_VENDA_LIQ,
				  0 AS VALOR_VENDA,
				  CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE A.QTDE * A.PRECO_LIQUIDO * ISNULL(1 - A.FATOR_DESCONTO_VENDA, 1) / COUNT(B.VENDEDOR) * -1 END AS VALOR_TROCA, 
				  CONVERT(NUMERIC(14, 2), 0) AS QTDE_VENDA, 
				  CONVERT(NUMERIC(14, 2), 0) AS QTDE_ITENS, 
				  CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE CONVERT(NUMERIC(14, 2), A.QTDE / CONVERT(NUMERIC(14, 2), COUNT(B.VENDEDOR))) * -1 END AS QTDE_TROCA 
			FROM
				  LOJA_VENDA_TROCA A 
				  LEFT JOIN LOJA_VENDA_VENDEDORES B ON A.CODIGO_FILIAL = B.CODIGO_FILIAL AND A.TICKET = B.TICKET AND A.DATA_VENDA = B.DATA_VENDA AND A.ID_VENDEDOR = B.ID_VENDEDOR 
			WHERE
				  (A.ITEM_EXCLUIDO = 0 OR A.ITEM_EXCLUIDO IS NULL) AND A.QTDE_CANCELADA = 0
			GROUP BY
				  A.CODIGO_FILIAL, A.TICKET, A.DATA_VENDA, A.ITEM, A.ID_VENDEDOR, A.QTDE, A.PRECO_LIQUIDO, A.FATOR_DESCONTO_VENDA, A.PRODUTO, A.COR_PRODUTO, A.TAMANHO
		) G ON A.CODIGO_FILIAL = G.CODIGO_FILIAL AND A.TICKET = G.TICKET AND A.DATA_VENDA = G.DATA_VENDA AND D.ID_VENDEDOR = G.ID_VENDEDOR
WHERE 
      A.DATA_HORA_CANCELAMENTO IS NULL 
